/**
 * 代理类
 */
public class ProxySubject implements Subject {
    private RealSubject realSubject;
    /**
     * 原始未增强
     * */
    @Override
    public void request() {
        // 延迟初始化
        if (realSubject == null) {
            realSubject = new RealSubject();
        }
        
        // 前置处理
        System.out.println("代理：前置处理");
        
        // 调用真实对象
        realSubject.request();
        
        // 后置处理
        System.out.println("代理：后置处理");
    }
    
    /**
     * 增强版本 - 添加性能监控
     */
    public void enhancedRequest() {
        if (realSubject == null) {
            realSubject = new RealSubject();
        }
        
        long startTime = System.currentTimeMillis();
        System.out.println("代理：开始执行，记录性能");
        
        realSubject.request();
        
        long endTime = System.currentTimeMillis();
        System.out.println("代理：执行完成，耗时：" + (endTime - startTime) + "ms");
    }

}
